<template>
  <a-card :bordered="false">
    <div class="card-title">{{ $route.meta.title }}</div>
    <a-spin :spinning="isLoading">
      <a-steps :current="processStatus">
        <a-popover slot="progressDot" slot-scope="{ index, status, prefixCls }">
          <template slot="content">
            <span>step {{ index+1 }} status: {{ status }}</span>
          </template>
          <span :class="`${prefixCls}-icon-dot`" />
        </a-popover>
        <a-step v-for="(item,i) in processSign[processStatus]" :key="i" :title="item.title" :description="item.des" />
      </a-steps>
      <a-form class="height" :form="form" @submit="handleSubmit">
        <!--        1待审核 2待签到 3待知情 4待筛选 5待入组 6实验中 7已完成-->
        <a-form-item v-show="processStatus == 0" label="参与进度" :label-col="{ span: labelCol.span }" :wrapper-col="{ span: wrapperCol.span }">
          <a-radio-group v-decorator="['audit_status', { rules: [{ required: true, message: '请选择参与进度' }] }]">
            <a-radio-button value="0">
              未审核
            </a-radio-button>
            <a-radio-button value="1">
              已审核
            </a-radio-button>
          </a-radio-group>
        </a-form-item>
        <a-form-item v-show="processStatus == 1" label="参与进度" :label-col="{ span: labelCol.span }" :wrapper-col="{ span: wrapperCol.span }">
          <a-radio-group v-decorator="['sign_status', { rules: [{ required: true, message: '请选择参与进度' }] }]">
            <a-radio-button value="0">
              未签到
            </a-radio-button>
            <a-radio-button value="1">
              已签到
            </a-radio-button>
          </a-radio-group>
        </a-form-item>
        <a-form-item v-show="processStatus == 2" label="参与进度" :label-col="{ span: labelCol.span }" :wrapper-col="{ span: wrapperCol.span }">
          <a-radio-group v-decorator="['informed_status', { rules: [{ required: true, message: '请选择参与进度' }] }]">
            <a-radio-button value="0">
              未知情
            </a-radio-button>
            <a-radio-button value="1">
              已知情
            </a-radio-button>
          </a-radio-group>
        </a-form-item>
        <a-form-item v-show="processStatus == 3" label="参与进度" :label-col="{ span: labelCol.span }" :wrapper-col="{ span: wrapperCol.span }">
          <a-radio-group v-decorator="['filter_status', { rules: [{ required: true, message: '请选择参与进度' }] }]">
            <a-radio-button value="0">
              未筛选
            </a-radio-button>
            <a-radio-button value="1">
              已筛选
            </a-radio-button>
          </a-radio-group>
        </a-form-item>
        <a-form-item v-show="processStatus == 4" label="参与进度" :label-col="{ span: labelCol.span }" :wrapper-col="{ span: wrapperCol.span }">
          <a-radio-group v-decorator="['group_status', { rules: [{ required: true, message: '请选择参与进度' }] }]">
            <a-radio-button value="0">
              未入组
            </a-radio-button>
            <a-radio-button value="1">
              已入组
            </a-radio-button>
          </a-radio-group>
        </a-form-item>
        <a-form-item v-show="processStatus == 5" label="参与进度" :label-col="{ span: labelCol.span }" :wrapper-col="{ span: wrapperCol.span }">
          <a-radio-group v-decorator="['test_status', { rules: [{ required: true, message: '请选择参与进度' }] }]">
            <a-radio-button value="0">
              实验中脱离
            </a-radio-button>
            <a-radio-button value="1">
              已完成实验
            </a-radio-button>
          </a-radio-group>
        </a-form-item>
        <a-form-item v-show="processStatus == 6" label="参与进度" :label-col="{ span: labelCol.span }" :wrapper-col="{ span: wrapperCol.span }">
          <a-radio-group v-decorator="['finish_status', { rules: [{ required: true, message: '请选择参与进度' }] }]">
            <a-radio-button value="0">
              未完成
            </a-radio-button>
            <a-radio-button value="1">
              已完成
            </a-radio-button>
          </a-radio-group>
        </a-form-item>
        <a-form-item v-show="processStatus <= 6" :wrapper-col="{ span: wrapperCol.span, offset: labelCol.span }">
          <a-button type="primary" html-type="submit">提交</a-button>
        </a-form-item>
      </a-form>
    </a-spin>
  </a-card>
</template>

<script>
import pick from 'lodash.pick'
import * as Api from '@/api/project/parting'
import { SelectRegion } from '@/components'

export default {
  components: {
    SelectRegion
  },
  data () {
    return {
      id: 0,
      // 标签布局属性
      labelCol: { span: 3 },
      // 输入框布局属性
      wrapperCol: { span: 15 },
      // loading状态
      isLoading: false,
      // 当前表单元素
      form: this.$form.createForm(this),
      // 当前记录详情
      record: {},
      // 报名进度状态
      processStatus: 0,
      // 报名进度
      processSign: [
        [{ title: '待审核', des: '需管理员审核' }, { title: '待签到', des: '需管理员签到' }, { title: '待知情', des: '需管理员知情' }, { title: '待筛选', des: '需管理员刷选' }, { title: '待入组', des: '需管理员入组' }, { title: '待实验', des: '需管理员安排实验' }, { title: '待完成', des: '需管理员确认完成状态' }],
        [{ title: '已审核', des: '管理员已审核' }, { title: '待签到', des: '需管理员签到' }, { title: '待知情', des: '需管理员知情' }, { title: '待筛选', des: '需管理员刷选' }, { title: '待入组', des: '需管理员入组' }, { title: '待实验', des: '需管理员安排实验' }, { title: '待完成', des: '需管理员确认完成状态' }],
        [{ title: '已审核', des: '管理员已审核' }, { title: '已签到', des: '需管理员已签到' }, { title: '待知情', des: '需管理员知情' }, { title: '待筛选', des: '需管理员刷选' }, { title: '待入组', des: '需管理员入组' }, { title: '待实验', des: '需管理员安排实验' }, { title: '待完成', des: '需管理员确认完成状态' }],
        [{ title: '已审核', des: '管理员已审核' }, { title: '已签到', des: '需管理员已签到' }, { title: '已知情', des: '管理员已知情' }, { title: '待筛选', des: '需管理员刷选' }, { title: '待入组', des: '需管理员入组' }, { title: '待实验', des: '需管理员安排实验' }, { title: '待完成', des: '需管理员确认完成状态' }],
        [{ title: '已审核', des: '管理员已审核' }, { title: '已签到', des: '需管理员已签到' }, { title: '已知情', des: '管理员已知情' }, { title: '已筛选', des: '管理员已刷选' }, { title: '待入组', des: '需管理员入组' }, { title: '待实验', des: '需管理员安排实验' }, { title: '待完成', des: '需管理员确认完成状态' }],
        [{ title: '已审核', des: '管理员已审核' }, { title: '已签到', des: '需管理员已签到' }, { title: '已知情', des: '管理员已知情' }, { title: '已筛选', des: '管理员已刷选' }, { title: '已入组', des: '管理员已入组' }, { title: '待实验', des: '需管理员安排实验' }, { title: '待完成', des: '需管理员确认完成状态' }],
        [{ title: '已审核', des: '管理员已审核' }, { title: '已签到', des: '需管理员已签到' }, { title: '已知情', des: '管理员已知情' }, { title: '已筛选', des: '管理员已刷选' }, { title: '已入组', des: '管理员已入组' }, { title: '实验中', des: '管理员已安排实验' }, { title: '待完成', des: '需管理员确认完成状态' }],
        [{ title: '已审核', des: '管理员已审核' }, { title: '已签到', des: '需管理员已签到' }, { title: '已知情', des: '管理员已知情' }, { title: '已筛选', des: '管理员已刷选' }, { title: '已入组', des: '管理员已入组' }, { title: '已实验', des: '管理员已安排实验' }, { title: '已完成', des: '管理员已确认完成状态' }]
      ]
    }
  },
  // 初始化数据
  created () {
    // 接收页面传参数
    this.id = this.$route.query.id
    // 获取当前详情记录
    this.getDetail()
  },
  methods: {

    // 获取当前详情记录
    getDetail () {
      this.isLoading = true
      Api.detail({ id: this.id })
        .then(result => {
          console.log('record:', result)
          // 当前记录
          this.record = result.data.values

          // 设置默认值
          this.setFieldsValue()
        })
        .finally(result => {
          this.isLoading = false
        })
    },

    /**
     * 设置默认值
     */
    setFieldsValue () {
      const { record, $nextTick, form: { setFieldsValue } } = this
      record.audit_status = String(record.audit_status)
      record.sign_status = String(record.sign_status)
      record.informed_status = String(record.informed_status)
      record.filter_status = String(record.filter_status)
      record.group_status = String(record.group_status)
      record.test_status = String(record.test_status)
      record.finish_status = String(record.finish_status)
      this.processStatus = record.status - 1
      $nextTick(() => {
        const pickData = pick(record, ['audit_status', 'sign_status', 'informed_status', 'filter_status', 'group_status', 'test_status', 'finish_status'])
        setFieldsValue(pickData)
      })
    },

    /**
     * 确认按钮
     */
    handleSubmit (e) {
      e.preventDefault()
      // 表单验证
      const { form: { validateFields } } = this
      validateFields((errors, values) => {
        // 提交到后端api
        !errors && this.onFormSubmit(values)
      })
    },

    /**
     * 提交到后端api
     */
    onFormSubmit (values) {
      this.isLoading = true
      values.id = this.id
      Api.edit({ form: values })
        .then((result) => {
          // 显示提示信息
          this.$message.success(result.message, 1.5, () => {
            this.$router.push('/project/manage/parting_index')
          })
        })
        .finally((result) => {
          this.isLoading = false
        })
    }

  }
}
</script>
<style lang="less" scoped>
.ant-form-item {
  .ant-form-item {
    margin-bottom: 0;
  }
}

/deep/.ant-form-item-control {
  padding-left: 10px;
  .ant-form-item-control {
    padding-left: 0;
  }
}
.height{margin-top: 2em;}
</style>
